Cycle Policy Level-03 Activity Execution Stats

Cycle Test Criteria

12.2 - Cycle performance test was conducted for Policy level processing. Cycle benchmark tests were executed to identify and verify the significant improvements or degradation's in this current release.

The performance plan includes varied configuration for Policy level transactions. Cycle tests were conducted on 5,300,000 policy data-set with ~52,000,000 pending activities to process. The scenarios picked for cycle performance testing includes Term and VDA PIT policies consisting of various activities matching the real time activity processing. The chosen scenarios in creating master policy data-set were close to production like policy contracts and plans.

Server Properties

Cycle.Properties - Cycle Client

  • Batch Size:

    • Maintain batch size larger in the range of 5,000-10,000 or even more, if the heap is not being compromised. Remember heap should be at least 30% free.

    • cycle.batchSize is the maximum number of Cycle tasks that will process in the Cycle Grid. Consider the following:

      • Min must be

        • Batch Size = sum of threads allocated to cycle agents (example: If we have 4 Cycle agents with 50 threads each, then Batch size will be 200).

        • To ensure that the threads are always running, set the Batch Size to twice the number of threads in the Cycle Grid and then multiply it with the group size.

    • The limitation on the number of tasks running in the cluster is dependent on the available memory in the cluster, not the thread pool sizes. The number of threads in the grid is only a theoretical estimate of how many tasks will be running at one time in the grid. Increasing the batchSize has the added benefit of reducing locking in the database when retrieving new tasks, which will increase performance. Setting the batchSize to 1000, 10000 or more is possible, depending on the memory in the cluster.

  • Cache Processing threads: Coherence Concurrent provides a facility to dispatch tasks, either a Runnable or a Callable, to a Coherence cluster for execution. Executors that actually execute the submitted tasks are configured on each cluster member by defining one or more named executors within a cache configuration resource. We have set it to 50 threads.

  • Cycle Group Size:

    • It determines the number of Cycle work items (Policies or Clients) to group together and execute on a single thread in the cluster.

    • The groupSize has an impact on the number of tasks that are submitted to the grid for processing. If the batchSize is set to 10000, and the groupSize is set to 10, then 1000 actual tasks will be submitted to the grid for processing, each task containing 10 work items to be completed. Consider the groupSize value when determining the batchSize.

    • Increase this value in order to group together tasks and speed up task submission and processing. The grid will process 10000 work items grouped in sets of 10 faster than 10000 individual work items.

    • Keep Group Size lower, usually under 30. The group size will group activities for a single thread submission.

  • Cycle Period:

    • cycle.period is the number of seconds that the Cycle Agent will wait before checking for additional work.

    • Set it higher in order to avoid pinging the database too frequently for work. Frequent trips to the database, especially across multiple Cycle Agents, can impact performance.

    • Set it low enough that you do not starve the Cycle Agent. If the threads in the Cycle Agent run out of work, they will not do anything until cycle.period expires and work is checked again.

    • Keep this property lower, usually set to 5 seconds. This will let Cycle sleep for 5 seconds and retry replenishing grid every 5 seconds

Cycle.Properties - Cycle Web

  • Application Mode: PRODUCTION

  • Application Resource Cache Timeout: -1

Cycle Hardware Specs

 

Cycle on Oracle DB

Specs

Oracle DB Parameter Configuration

sessions

5824

processes

3840

memory_target

0

memory_max_target

0

session_cached_cursors

2000

cursor_sharing

FORCE

commit_logging

IMMEDIATE

commit_wait

NOWAIT

open_cursors

1000

sga_max_size

50G

sga_min_size

0

sga_target

50G

Note:
1. Added redo log files with 3 groups of 3 redo files of 8GB each.
2. Reorganized tables with large amounts of data.
3. Gathered schema level statistics before each cycle execution.

 

Application Server Specs

No. of OCPUs

16

No. of Computes (VMs)

2

No. Of  Cycle Agents (JVMs)

8 ( 4 in each VM)

 

JVM Specs

Heap size

6 GB

GC

G1GC

 

Cycle Specs

cycle.period

5

cycle.batchSize

24000

cycle.groupSize

30

Coherence Specs

cycle.thread.count ( in coherence cache file )

50

total thread count

400 → (50 * 8 as there are 8 cycle nodes)

executor

fixed

name

Single-Cache

 

Data Specs - Before Running Cycle

Policy Volume

5.3M

Activity Volume

52M

DB connection pool size

#

Data Source Name

Parameters

1

ADMINSERVERDS

ADMINSERVERSEARCHDS

ADMINSERVERRESOURCEDS

ADMINSERVERREADONLYDS

maxActive = 300

maxIdle = 50

minIdle = 10

initialSize = 20

maxWait = 10000

Business Day Processing

Transaction Type

Plan Name

Count

BankDraft

Guaranteed Level Premium Term

2541

BankDraftGetSuspense

Guaranteed Level Premium Term

2541

BankDraftStart

Guaranteed Level Premium Term

1263173

BankDraftStop

Guaranteed Level Premium Term

2651

COIPayment

Guaranteed Level Premium Term

2651

CoverageCalculation

Guaranteed Level Premium Term

3430

Disbursement

Guaranteed Level Premium Term

2651

Issue

Guaranteed Level Premium Term

2563

Premium

Guaranteed Level Premium Term

5243

WaiverActivate

Guaranteed Level Premium Term

2651

WaiverDeactivate

Guaranteed Level Premium Term

1260430

AutoPayStart

Variable Deferred Annuity-PIT

5138

BeneficiaryConfirmationRequest

Variable Deferred Annuity-PIT

3121

Commission

Variable Deferred Annuity-PIT

7663

DeathBenefitPayout

Variable Deferred Annuity-PIT

3118

DeathNotify

Variable Deferred Annuity-PIT

3129

Disbursement

Variable Deferred Annuity-PIT

3118

InitialPremium

Variable Deferred Annuity-PIT

7663

Issue

Variable Deferred Annuity-PIT

11928

PolicyDeathNotify

Variable Deferred Annuity-PIT

3373

PolicyProofOfDeath

Variable Deferred Annuity-PIT

3263

Submit

Variable Deferred Annuity-PIT

7715

SystematicWithdrawalStart

Variable Deferred Annuity-PIT

5138

AnniversaryProcessing Variable Deferred Annuity-PIT T-Y 3

Performance Results

Note: Above mentioned results are purely based on our internal test scenarios, our internal transaction configurations, SQL and hardware tuning. The results may vary depending on customer's own configuration, data volumes, hardware specifications and db and application server tuning.

CPU Utilization of DB

CPU Utilization of Applications:

Memory Utilization of DB

Memory Utilization of Applications